package sao.visao;

import java.io.UnsupportedEncodingException;
import java.util.List;

import sao.modelo.HorarioAgendamento;

/**
 * Esta classe é usada para gerar o HTML da agenda diária tendo em vista
 * a dificuldade em gerar tal HTML usando as taglibs padrões
 * @author Wendell Costa
 *
 */
public class AgendaDiariaVisao {
	
	/**
	 * Variável que armazena a String necessária para renderizar a agenda diária
	 */
	private String htmlAgenda;
	
	
	/**
	 * Construtor da Visão da Agenda Diária
	 * @param agenda
	 * @throws UnsupportedEncodingException
	 */
	public AgendaDiariaVisao(List<HorarioAgendamento> agenda) throws UnsupportedEncodingException{
		this.gerarHTML(agenda);
	}
	
	
	/**
	 * Retorna a string com o código HTML para renderização da agenda diária do médico
	 * @return O código HTML com a table da agenda
	 */
	public String getHtmlAgenda(){
		return this.htmlAgenda;
	}
	

	/**
	 * Gera o código HTML para renderização da agenda diária do médico
	 * @param agenda - Uma List de agendamentos diários
	 * @throws UnsupportedEncodingException - Lançada quando o sistema não oferecer suporte ao tipo de codificação
	 */
	private void gerarHTML(List<HorarioAgendamento> agenda) throws UnsupportedEncodingException {
		StringBuilder sb = new StringBuilder();
		// Testa se existe alguma agenda de horários para poder gerar o HTML
		if (agenda.size() == 0) {
			sb.append("<p class='mensagem-erro'>Não existem horários disponíveis neste dia!</p>");
			htmlAgenda = sb.toString();
			return;
		}
		sb.append("<table id='agenda-diaria'>\n");
		sb.append("<tr><th>HORÁRIO</th><th>DISPONIBILIDADE</th></tr>\n");
		for (HorarioAgendamento h : agenda) {
			sb.append("<tr>");
			sb.append("<td>" + h.getHora() + "</td>");
			sb.append("<td>" + h.getStatus() + "</td>");
			sb.append("</tr>\n");
		}
		sb.append("</table>\n");
		this.htmlAgenda = sb.toString();
	}
	

}//FIM classe AgendadiariaVisao
